Led Sign - Wide Letters


Put this code in you page where ever you want he LED sign to go. Also, you need to put these 2 gifs, on.gif and off.gif, in your internet directory. VERY IMPORTANT: No capital letters!, it won't work


<SCRIPT LANGUAGE="JavaScript">


<!--

// set messages 
var messages = new Array()
messages[0] = "MESSAGE #1"
messages[1] = "MESSAGE #2"
messages[2] = "MESSAGE #3"
messages[3] = "MESSAGE #4"

var pause = 1000
var space = 1
var height = 5
var width = 5
var letters = new letterArray()
var on = new Image(5, 5)
var off = new Image(5, 5)

// set image URLs
on.src = "on.gif"
off.src = "off.gif"

var imageNum = document.images.length
var boardWidth = 0
for (var i = 0; i < messages.length; ++i) {
        var lengthWithNoSpaces = messages[i].split(" ").join("").length
        var numberOfSpaces = messages[i].length - lengthWithNoSpaces
        var currentBoardWidth = lengthWithNoSpaces * (width + space) - space + numberOfSpaces * space * 2
        if (boardWidth < currentBoardWidth)
                boardWidth = currentBoardWidth
}

var running = false
var timerID = null

function letterArray() {
        this.a = new Array(height)
        this.a[0] = " *** "
        this.a[1] = "*   *"
        this.a[2] = "*****"
        this.a[3] = "*   *"
        this.a[4] = "*   *"

        this.b = new Array(height)
        this.b[0] = "**** "
        this.b[1] = "*   *"
        this.b[2] = "**** "
        this.b[3] = "*   *"
        this.b[4] = "**** "

        this.c = new Array(height)
        this.c[0] = " ****"
        this.c[1] = "*    "
        this.c[2] = "*    "
        this.c[3] = "*    "
        this.c[4] = " ****"

        this.d = new Array(height)
        this.d[0] = "**** "
        this.d[1] = "*   *"
        this.d[2] = "*   *"
        this.d[3] = "*   *"
        this.d[4] = "**** "

        this.e = new Array(height)
        this.e[0] = "***** "
        this.e[1] = "*    "
        this.e[2] = "**** "
        this.e[3] = "*    "
        this.e[4] = "*****"

        this.f = new Array(height)
        this.f[0] = "*****"
        this.f[1] = "*    "
        this.f[2] = "**** "
        this.f[3] = "*    "
        this.f[4] = "*    "

        this.g = new Array(height)
        this.g[0] = " *** "
        this.g[1] = "*    "
        this.g[2] = "* ***"
        this.g[3] = "*  * "
        this.g[4] = " *** "

        this.h = new Array(height)
        this.h[0] = "*   *"
        this.h[1] = "*   *"
        this.h[2] = "*****"
        this.h[3] = "*   *"
        this.h[4] = "*   *"

        this.i = new Array(height)
        this.i[0] = "*****"
        this.i[1] = "  *  "
        this.i[2] = "  *  "
        this.i[3] = "  *  "
        this.i[4] = "*****"

        this.j = new Array(height)
        this.j[0] = "    *"
        this.j[1] = "    *"
        this.j[2] = "    *"
        this.j[3] = "*   *"
        this.j[4] = " ***"
        
        this.k = new Array(height)
        this.k[0] = "*   *"
        this.k[1] = "*  * "
        this.k[2] = "***  "
        this.k[3] = "*  * "
        this.k[4] = "*   *"

        this.l = new Array(height)
        this.l[0] = "*   "
        this.l[1] = "*   "
        this.l[2] = "*   "
        this.l[3] = "*   "
        this.l[4] = "*****"

        this.m = new Array(height)
        this.m[0] = "*   *"
        this.m[1] = "** **"
        this.m[2] = "* * *"
        this.m[3] = "*   *"
        this.m[4] = "*   *"

        this.n = new Array(height)
        this.n[0] = "*   *"
        this.n[1] = "**  *"
        this.n[2] = "* * *"
        this.n[3] = "*  **"
        this.n[4] = "*   *"

        this.o = new Array(height)
        this.o[0] = " *** "
        this.o[1] = "*   *"
        this.o[2] = "*   *"
        this.o[3] = "*   *"
        this.o[4] = " *** "

        this.p = new Array(height)
        this.p[0] = "**** "
        this.p[1] = "*   *"
        this.p[2] = "**** "
        this.p[3] = "*    "
        this.p[4] = "*    "

        this.q = new Array(height)
        this.q[0] = "**** "
        this.q[1] = "*  * "
        this.q[2] = "* ** "
        this.q[3] = "*  * "
        this.q[4] = "*** *"

        this.r = new Array(height)
        this.r[0] = "**** "
        this.r[1] = "*   *"
        this.r[2] = "**** "
        this.r[3] = "*  * "
        this.r[4] = "*   *"

        this.s = new Array(height)
        this.s[0] = " ****"
        this.s[1] = "*    "
        this.s[2] = " *** "
        this.s[3] = "    *"
        this.s[4] = "**** "

        this.t = new Array(height)
        this.t[0] = "*****"
        this.t[1] = "  *  "
        this.t[2] = "  *  "
        this.t[3] = "  *  "
        this.t[4] = "  *  "

        this.u = new Array(height)
        this.u[0] = "*   *"
        this.u[1] = "*   *"
        this.u[2] = "*   *"
        this.u[3] = "*   *"
        this.u[4] = " *** "

        this.v = new Array(height)
        this.v[0] = "*   *"
        this.v[1] = "*   *"
        this.v[2] = "*   *"
        this.v[3] = " * * "
        this.v[4] = "  * "

        this.w = new Array(height)
        this.w[0] = "*   *"
        this.w[1] = "*   *"
        this.w[2] = "* * *"
        this.w[3] = "** **"
        this.w[4] = "*   *"

        this.x = new Array(height)
        this.x[0] = "*   *"
        this.x[1] = " * * "
        this.x[2] = "  *  "
        this.x[3] = " * * "
        this.x[4] = "*   *"

        this.y = new Array(height)
        this.y[0] = "*   *"
        this.y[1] = " * * "
        this.y[2] = "  *  "
        this.y[3] = "  *  "
        this.y[4] = "  *  "

        this.z = new Array(height)
        this.z[0] = "*****"
        this.z[1] = "   *"
        this.z[2] = "  * "
        this.z[3] = " *  "
        this.z[4] = "*****"

        this['!'] = new Array(height)
        this['!'][0] = " *  "
        this['!'][1] = " *  "
        this['!'][2] = " *  "
        this['!'][3] = "    "
        this['!'][4] = " *  "

        this[':'] = new Array(height)
        this[':'][0] = "    "
        this[':'][1] = " *  "
        this[':'][2] = "    "
        this[':'][3] = " *  "
        this[':'][4] = "    "

        this['.'] = new Array(height)
        this['.'][0] = "    "
        this['.'][1] = "    "
        this['.'][2] = "    "
        this['.'][3] = "    "
        this['.'][4] = " *  "

        this['='] = new Array(height)
        this['='][0] = "    "
        this['='][1] = "****"
        this['='][2] = "    "
        this['='][3] = "****"
        this['='][4] = "    "

        this['+'] = new Array(height)
        this['+'][0] = "     "
        this['+'][1] = "  *  "
        this['+'][2] = " *** "
        this['+'][3] = "  *  "
        this['+'][4] = "     "

        this['-'] = new Array(height)
        this['-'][0] = "    "
        this['-'][1] = "    "
        this['-'][2] = "****"
        this['-'][3] = "    "
        this['-'][4] = "    "

        this['/'] = new Array(height)
        this['/'][0] = "    *"
        this['/'][1] = "   * "
        this['/'][2] = "  *  "
        this['/'][3] = " *   "
        this['/'][4] = "*    "

        this['\\'] = new Array(height)
        this['\\'][0] = "*    "
        this['\\'][1] = " *   "
        this['\\'][2] = "  *  "
        this['\\'][3] = "   * "
        this['\\'][4] = "    *"

        this['"'] = new Array(height)
        this['"'][0] = " * * "
        this['"'][1] = " * * "
        this['"'][2] = " * * "
        this['"'][3] = "     "
        this['"'][4] = "     "

        this["'"] = new Array(height)
        this["'"][0] = "  *  "
        this["'"][1] = "  *  "
        this["'"][2] = "  *  "
        this["'"][3] = "     "
        this["'"][4] = "     "

        this['('] = new Array(height)
        this['('][0] = "   *"
        this['('][1] = "  * "
        this['('][2] = "  * "
        this['('][3] = "  * "
        this['('][4] = "   *"

        this[')'] = new Array(height)
        this[')'][0] = "*   "
        this[')'][1] = " *  "
        this[')'][2] = " *  "
        this[')'][3] = " *  "
        this[')'][4] = "*   "

        this['*'] = new Array(height)
        this['*'][0] = "*   *"
        this['*'][1] = " *** "
        this['*'][2] = "*****"
        this['*'][3] = " *** "
        this['*'][4] = "*   *"

        this['?'] = new Array(height)
        this['?'][0] = "**** "
        this['?'][1] = "    *"
        this['?'][2] = "  *  "
        this['?'][3] = "     "
        this['?'][4] = "  *  "

        this['0'] = new Array(height)
        this['0'][0] = " *** "
        this['0'][1] = "*   *"
        this['0'][2] = "* * *"
        this['0'][3] = "*   *"
        this['0'][4] = " *** "

        this['1'] = new Array(height)
        this['1'][0] = "  *  "
        this['1'][1] = " **  "
        this['1'][2] = "  *  "
        this['1'][3] = "  *  "
        this['1'][4] = " *** "

        this['2'] = new Array(height)
        this['2'][0] = "*** "
        this['2'][1] = "   *"
        this['2'][2] = " **"
        this['2'][3] = "*   "
        this['2'][4] = "****"

        this['3'] = new Array(height)
        this['3'][0] = "****"
        this['3'][1] = "   *"
        this['3'][2] = "****"
        this['3'][3] = "   *"
        this['3'][4] = "****"

        this['4'] = new Array(height)
        this['4'][0] = "*  *"
        this['4'][1] = "*  *"
        this['4'][2] = "****"
        this['4'][3] = "   *"
        this['4'][4] = "   *"

        this['5'] = new Array(height)
        this['5'][0] = "*****"
        this['5'][1] = "*    "
        this['5'][2] = "**** "
        this['5'][3] = "    *"
        this['5'][4] = "**** "

        this['6'] = new Array(height)
        this['6'][0] = "**** "
        this['6'][1] = "*    "
        this['6'][2] = "****"
        this['6'][3] = "*  *"
        this['6'][4] = "****"

        this['7'] = new Array(height)
        this['7'][0] = "****"
        this['7'][1] = "   *"
        this['7'][2] = "  * "
        this['7'][3] = " *  "
        this['7'][4] = "*   "

        this['8'] = new Array(height)
        this['8'][0] = "****"
        this['8'][1] = "*  *"
        this['8'][2] = "****"
        this['8'][3] = "*  *"
        this['8'][4] = "****"

        this['9'] = new Array(height)
        this['9'][0] = "****"
        this['9'][1] = "*  *"
        this['9'][2] = "****"
        this['9'][3] = "   *"
        this['9'][4] = "****"
}

function drawBlank() {
        var gt = unescape("%3e")

        document.write('<TABLE BORDER=2 CELLPADDING=8' + gt + '<TR' + gt + '<TD BGCOLOR ALIGN="center" VALIGN="center"' + gt)

        for (var y = 0; y < height; ++y) {
                for (var x = 0; x < boardWidth; ++x) {
                        document.write('<IMG SRC="' + off.src + '" HEIGHT=5 WIDTH=5' + gt)
                }
                document.write('<BR' + gt)
        }
        document.write('</TD' + gt + '</TR' + gt + '</TABLE' + gt)
}

function setLight(state, x, y) {
        if (state)
                document.images[computeIndex(x, y)].src = on.src
        else
                document.images[computeIndex(x, y)].src = off.src
}

function drawLetter(letter, startX) {
        for (var x = 0; x < width; ++x) {
                for (var y = 0; y < height; ++y) {
                        setLight(letters[letter][y].charAt(x) == "*", startX + x, y)
                }
        }
}

function drawSpace(startX) {
        for (var x = 0; x < space; ++x) {
                for (var y = 0; y < height; ++y) {
                        setLight(false, startX + x, y)
                }
        }
}

function computeIndex(x, y) {
        return (y * boardWidth + x) + imageNum
}

function floodBoard(startX) {
        for (var x = startX; x < boardWidth; ++x) {
                for (var y = 0; y < height; ++y) {
                        setLight(false, x, y)
                }
        }
}

function drawMessage(num) {
        var text = messages[num]
        var i = 0
        var j = 0

        while (1) {
                if (text.charAt(j) != " ") {
                        // draw current letter
                        drawLetter(text.charAt(j), i)

                        i += width
                } else {
                        drawSpace(i)
                        i += space
                }
                if (j < text.length - 1) {
                        drawSpace(i)
                        i += space
                } else 
                        break

                ++j
        }


        floodBoard(i)

        if (num < messages.length - 1)
                val = ++num
        else
                val = 0 
        timerID = setTimeout("drawMessage(val)", pause)
}

function startSign() {
        running = true
        drawMessage(0)
}

function stopSign() {
        if(running)
                clearTimeout(timerID)
        running = false
}

document.write('<CENTER><FORM>')
drawBlank()

document.write('<INPUT TYPE="button" VALUE="start" onClick="startSign()">')
document.write('<INPUT TYPE="button" VALUE="stop" onClick="stopSign(); floodBoard(0)">')
document.write('</FORM></CENTER>')

// -->


</SCRIPT>
To add more messages just add messages[4] = "FIFTH MESSAGE" in the top of the script, just change the numbers appropriately. Don't forget to change the messages!

If you want to make the sign start when your page loads up instead of pressing the button, first delete this line at the end of the code

document.write('<INPUT TYPE="button" VALUE="start" onClick="startSign()">')
Now put this inside your body code.

<body onLoad="startSign()">

An example is:
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#000080" ALINK="#000080" onLoad="startSign()">
or
<body onLoad="startSign()">